file-system-model: Refactor a helper
authorPeter Bloomfield <PeterBloomfield@bellsouth.net>
Sun, 26 Apr 2020 21:38:49 +0000 (17:38 -0400)
committerPeter Bloomfield <PeterBloomfield@bellsouth.net>
Sun, 26 Apr 2020 21:38:49 +0000 (17:38 -0400)
Push more common code into the helper for
gtk_file_system_model_query_done() and
gtk_file_system_model_one_query_done().

gtk/gtkfilesystemmodel.c

index 9de81a4f89b2914219e7eb5406ac64d9f52f8d52..0a9e348b7e1245ad00b6176faf0e6c5e7a7f5ec6 100644 (file)
@@ -1205,16 +1205,31 @@ gtk_file_system_model_got_files (GObject *object, GAsyncResult *res, gpointer da
 /* Helper for gtk_file_system_model_query_done and
  * gtk_file_system_model_one_query_done */
 static void
-query_done_helper (GtkFileSystemModel *model,
-                   GFile              *file,
-                   GFileInfo          *info)
+query_done_helper (GObject *     object,
+                   GAsyncResult *res,
+                   gpointer      data,
+                   gboolean      do_thaw_updates)
 {
+  GtkFileSystemModel *model;
+  GFile *file = G_FILE (object);
+  GFileInfo *info;
   guint id;
 
+  info = g_file_query_info_finish (file, res, NULL);
+  if (info == NULL)
+    return;
+
+  model = GTK_FILE_SYSTEM_MODEL (data);
+
   _gtk_file_system_model_update_file (model, file, info);
 
   id = node_get_for_file (model, file);
   gtk_file_system_model_sort_node (model, id);
+
+  if (do_thaw_updates)
+    thaw_updates (model);
+
+  g_object_unref (info);
 }
 
 static void
@@ -1222,16 +1237,7 @@ gtk_file_system_model_query_done (GObject *     object,
                                   GAsyncResult *res,
                                   gpointer      data)
 {
-  GFile *file = G_FILE (object);
-  GFileInfo *info;
-
-  info = g_file_query_info_finish (file, res, NULL);
-
-  if (info != NULL)
-    {
-      query_done_helper (GTK_FILE_SYSTEM_MODEL (data), file, info);
-      g_object_unref (info);
-    }
+  query_done_helper (object, res, data, FALSE);
 }
 
 static void
@@ -2150,19 +2156,7 @@ gtk_file_system_model_one_query_done (GObject *     object,
                                       GAsyncResult *res,
                                       gpointer      data)
 {
-  GFile *file = G_FILE (object);
-  GFileInfo *info;
-
-  info = g_file_query_info_finish (file, res, NULL);
-
-  if (info != NULL)
-    {
-      GtkFileSystemModel *model = GTK_FILE_SYSTEM_MODEL (data);
-
-      query_done_helper (model, file, info);
-      g_object_unref (info);
-      thaw_updates (model);
-    }
+  query_done_helper (object, res, data, TRUE);
 }
 
 void